/*
 * Copyright (c) 2011-2013, fortiss GmbH.
 * Licensed under the Apache License, Version 2.0.
 *
 * Use, modification and distribution are subject to the terms specified
 * in the accompanying license file LICENSE.txt located at the root directory
 * of this software distribution. A copy is available at
 * http://chromosome.fortiss.org/.
 *
 * This file is part of CHROMOSOME.
 *
 * $Id: deMarshalerTestTopicData.h 5062 2013-09-16 08:47:39Z gulati $
 */

/**
 * \file
 *         Topic registry extension.
 *         Project specific topic data structures are defined here.
 *
 * \author
 *         This file has been generated by the CHROMOSOME Modeling Tool (XMT)
 *         (fortiss GmbH).
 */

#ifndef XME_WP_DEMARSHALERTEST_TOPICDATA_H
#define XME_WP_DEMARSHALERTEST_TOPICDATA_H

/******************************************************************************/
/***   Includes                                                             ***/
/******************************************************************************/
#include <stdbool.h>
#include <stdint.h>

/******************************************************************************/
/***   Type definitions                                                     ***/
/******************************************************************************/
/**
 * \typedef xme_wp_deMarshalerTest_topic_test_e_t
 *
 * \brief enum values for Topics for the test example.
 */

#pragma pack(push, 1)
typedef enum
{
    XME_WP_DEMARSHALERTEST_TOPIC_TEST_E_A = 0, ///< one value for enumeration test example.
    XME_WP_DEMARSHALERTEST_TOPIC_TEST_E_B = -1, ///< a negative value for enumeration test example. 
    XME_WP_DEMARSHALERTEST_TOPIC_TEST_E_C = 2147483647, ///< a big number for enumeration test example. 
    XME_WP_DEMARSHALERTEST_TOPIC_TEST_E_D = -2147483647 ///< a negative big number for enumeration test example. 
} xme_wp_deMarshalerTest_topic_test_e_t;
#pragma pack(pop)

/**
 * \struct xme_wp_deMarshalerTest_topic_test_t
 *
 * \brief  Data type for topic 'test' (identifier: XME_WP_DEMARSHALERTEST_TOPIC_TEST).
 */
#pragma pack(push, 1)
typedef struct
{
    bool flag; ///< boolean datatype test example.
    uint8_t uint8; ///< 8-bits unsigned int datatype test example.
    uint16_t uint16; ///< 16-bits unsigned int datatype test example.
    uint32_t uint32; ///<  32-bits unsigned int datatype test example.
    uint64_t uint64; ///< 64-bits unsigned int datatype test example.
    int8_t int8; ///< 8-bits signed int datatype test example.
    int16_t int16; ///< 16-bits signed int datatype test example.
    int32_t int32; ///< 32-bits signed int datatype test example.
    int64_t int64; ///< 64-bits signed int datatype test example.
    float f; ///< float datatype test example.
    double d; ///< double datatype test example.
    char c; ///< character datatype test example.
    xme_wp_deMarshalerTest_topic_test_e_t e; ///< enumeration datatype test example.
    uint16_t array0[3]; ///< an array of uint16_t with three elements. 
    uint16_t array1[2][3]; ///< a matrix of uint16_t with 2x3 elements. 
    struct
    {
        uint16_t uint16; ///< a unsigned int element. 
        uint16_t a[3]; ///< an array of three elements. 
        struct
        {
            bool flag0; ///< a boolean flag. 
            bool flag1; ///< other boolean flag. 
        }
        subSubStruct; ///< a substruct inside an struct example. 
    }
    subStruct; ///< a substruct example. 
    struct
    {
        bool flag0; ///< a boolean flag. 
        bool flag1; ///< another boolean flag. 
    }
    array2[2]; ///< an array of two structs. 
    struct
    {
        char x[2]; ///< a char array of two elements. 
        struct
        {
            char c[2]; ///< a char array. 
        }
        y[2]; ///< an array of two elements. 
        struct
        {
            char c[2]; ///< a char array. 
        }
        z[2]; ///< an array of two structs. 
    }
    array3[1]; ///< an array of one struct. 
} xme_wp_deMarshalerTest_topic_test_t; 
#pragma pack(pop)

/**
 * \struct xme_wp_deMarshalerTest_topic_topic0_t
 *
 * \brief  Data type for topic 'topic0' (identifier: XME_WP_DEMARSHALERTEST_TOPIC_TOPIC0).
 */
#pragma pack(push, 1)
typedef struct
{
    uint32_t test; ///< an unsigned int test variable. 
} xme_wp_deMarshalerTest_topic_topic0_t;
#pragma pack(pop)

/**
 * \struct xme_wp_deMarshalerTest_topic_topic1_t
 *
 * \brief  Data type for topic 'topic1' (identifier: XME_WP_DEMARSHALERTEST_TOPIC_TOPIC1).
 */
#pragma pack(push, 1)
typedef struct
{
    uint32_t test; ///< an unsigned int test variable. 
} xme_wp_deMarshalerTest_topic_topic1_t;
#pragma pack(pop)

/**
 * \struct xme_wp_deMarshalerTest_topic_topic2_t
 *
 * \brief  Data type for topic 'topic2' (identifier: XME_WP_DEMARSHALERTEST_TOPIC_TOPIC2).
 */
#pragma pack(push, 1)
typedef struct
{
    uint32_t test; ///< an unsigned int test variable. 
} xme_wp_deMarshalerTest_topic_topic2_t;
#pragma pack(pop)

/**
 * \typedef xme_wp_deMarshalerTest_topic_test_attribute_attribute0_t
 *
 * \brief  Data type for attribute 'attribute0' (identifier: XME_WP_DEMARSHALERTEST_TOPIC_ATTRIBUTE_KEY_ATTRIBUTE0).
 */
typedef uint16_t xme_wp_deMarshalerTest_topic_test_attribute_attribute0_t;

/**
 * \struct xme_wp_deMarshalerTest_topic_test_attribute_attribute1_t
 *
 * \brief  Data type for attribute 'attribute1' (identifier: XME_WP_DEMARSHALERTEST_TOPIC_ATTRIBUTE_KEY_ATTRIBUTE1).
 */
#pragma pack(push, 1)
typedef struct
{
    bool flag0; ///< a boolean variable. 
    bool flag1; ///< another boolean variable. 
} xme_wp_deMarshalerTest_topic_test_attribute_attribute1_t;
#pragma pack(pop)

#endif // #ifndef XME_WP_DEMARSHALERTEST_TOPICDATA_H
